/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author martin
 */
public class Estacionamiento_implementacion_listaTest {

    /**
     *
     */
    public Estacionamiento_implementacion_listaTest() {
    }

    /**
     *
     * @throws Exception
     */
    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    /**
     *
     * @throws Exception
     */
    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    /**
     * 
     */
    @Before
    public void setUp() {
    }

    /**
     *
     */
    @After
    public void tearDown() {
    }

    
    /**
     * Test of full method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testFull() {
        System.out.println("full");
        String Elemento_G="Prueba";//Elemento de la clase String para hacer la prueba
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        for(int i=0;i<10;i++){//se estacionan 10 elementos
            instance.push(Elemento_G);
        }
        boolean expResult = true;//se espera que esté lleno después de eso
        boolean result = instance.full();
        assertEquals(expResult, result);
    }

    /**
     * Test of empty method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testEmpty() {
        System.out.println("empty");
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        boolean expResult = true; //Ya que sin ingresar ninguno con push devería estar vacío

        boolean result = instance.empty();//Llamada al método en prueba

        assertEquals(expResult, result);
    }

    /**
     * Test of pop method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testPop() {
        System.out.println("pop");

        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        Vehiculo Prueba= new Vehiculo("P000AAA");

        instance.push(Prueba);
        instance.pop();// se llama al método que está en prueba ***************************************
        boolean expResult = true;//Devería estar vacío el arreglo después de hacer un pop luego el push
        boolean result = instance.empty(); //se llama para ver si realmente está vacío

        assertEquals(expResult, result);
    }

    /**
     * Test of ultima_Posicion method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testUltima_Posicion() {
        System.out.println("ultima_Posicion");
        String Elemento_G="Prueba";//Elemento de la clase String para hacer la prueba
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        instance.push(Elemento_G);
        instance.push(Elemento_G);

        int expResult = 2; //debido a que se hicieron 2 push
        int result = instance.ultima_Posicion();
        assertEquals(expResult, result);
    }

    
    /**
     * Test of push method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testPush() {

        System.out.println("push");
        String Elemento_G="Prueba";//Elemento de la clase String para hacer la prueba
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        instance.push(Elemento_G);//Se agrega un string utilizando el método creado
        int expResult= 9;
        int Result=instance.getDisponibles();
        assertEquals(expResult,Result); //compara la igualdad de resultado teorico con exp.
    }

    /**
     * Test of peek method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testPeek() {
        System.out.println("peek");

        String Elemento_G="Prueba";//Elemento de la clase String para hacer la prueba
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();

        Object expResult = null;//Resultado esperado

        Object result = instance.peek();//Se llama al método en prueba

        assertEquals(expResult, result);
    }

    /**
     * Test of toString method, of class Estacionamiento_implementacion_lista.
     */
    @Test
    public void testToString() {
        System.out.println("toString");
        Estacionamiento_implementacion_lista instance = new Estacionamiento_implementacion_lista();
        String Elemento_G="OC";//Elemento de la clase String para hacer la prueba
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G);
        instance.push(Elemento_G); //se llamó 10 veces push

        String expResult = "| OC | OC | OC | OC | OC | OC | OC | OC | OC | OC |";//por lo que la pila está llena
        String result = instance.toString();
        assertEquals(expResult, result);
    }

}